]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
status/camera: New indicator
authorrobert.mader@collabora.com <robert.mader@collabora.com>
Thu, 13 Jul 2023 21:34:30 +0000 (23:34 +0200)
committerrobert.mader@collabora.com <robert.mader@collabora.com>
Sat, 29 Jul 2023 10:55:15 +0000 (13:55 +0300)
Add a new status indicator following the system-status-indicators
mockup.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2840>

js/js-resources.gresource.xml
js/ui/panel.js
js/ui/status/camera.js [new file with mode: 0644]

index 93d612cc52f23930a47daf36696d752063948e07..1e36ed4a18bd5b8f6245048ecc07fc9292b3781c 100644 (file)
     <file>ui/status/autoRotate.js</file>
     <file>ui/status/backgroundApps.js</file>
     <file>ui/status/brightness.js</file>
+    <file>ui/status/camera.js</file>
     <file>ui/status/darkMode.js</file>
     <file>ui/status/dwellClick.js</file>
     <file>ui/status/location.js</file>
index 073d78b16a4a7c1929c9881d0fbe418b3e2461f7..b44635f56b77f45675f371b6354251380c414ae3 100644 (file)
@@ -23,6 +23,7 @@ const Main = imports.ui.main;
 const RemoteAccessStatus = imports.ui.status.remoteAccess;
 const PowerProfileStatus = imports.ui.status.powerProfiles;
 const RFKillStatus = imports.ui.status.rfkill;
+const CameraStatus = imports.ui.status.camera;
 const VolumeStatus = imports.ui.status.volume;
 const BrightnessStatus = imports.ui.status.brightness;
 const SystemStatus = imports.ui.status.system;
@@ -388,6 +389,7 @@ class QuickSettings extends PanelMenu.Button {
         }
 
         this._system = new SystemStatus.Indicator();
+        this._camera = new CameraStatus.Indicator();
         this._volumeOutput = new VolumeStatus.OutputIndicator();
         this._volumeInput = new VolumeStatus.InputIndicator();
         this._brightness = new BrightnessStatus.Indicator();
@@ -403,6 +405,7 @@ class QuickSettings extends PanelMenu.Button {
         this._backgroundApps = new BackgroundAppsStatus.Indicator();
 
         this._indicators.add_child(this._remoteAccess);
+        this._indicators.add_child(this._camera);
         this._indicators.add_child(this._volumeInput);
         this._indicators.add_child(this._location);
         this._indicators.add_child(this._brightness);
@@ -421,6 +424,7 @@ class QuickSettings extends PanelMenu.Button {
         this._indicators.add_child(this._system);
 
         this._addItems(this._system.quickSettingsItems, N_QUICK_SETTINGS_COLUMNS);
+        this._addItems(this._camera.quickSettingsItems, N_QUICK_SETTINGS_COLUMNS);
         this._addItems(this._volumeOutput.quickSettingsItems, N_QUICK_SETTINGS_COLUMNS);
         this._addItems(this._volumeInput.quickSettingsItems, N_QUICK_SETTINGS_COLUMNS);
         this._addItems(this._brightness.quickSettingsItems, N_QUICK_SETTINGS_COLUMNS);
diff --git a/js/ui/status/camera.js b/js/ui/status/camera.js
new file mode 100644 (file)
index 0000000..b5ff2ee
--- /dev/null
@@ -0,0 +1,22 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+/* exported Indicator */
+
+const GObject = imports.gi.GObject;
+const Shell = imports.gi.Shell;
+
+const {SystemIndicator} = imports.ui.quickSettings;
+
+var Indicator = GObject.registerClass(
+class Indicator extends SystemIndicator {
+    constructor() {
+        super();
+
+        this._indicator = this._addIndicator();
+        this._indicator.icon_name = 'camera-web-symbolic';
+        this._indicator.add_style_class_name('privacy-indicator');
+
+        this._cameraMonitor = new Shell.CameraMonitor();
+        this._cameraMonitor.bind_property('cameras-in-use', this._indicator,
+            'visible', GObject.BindingFlags.SYNC_CREATE);
+    }
+});